package mobao.system.token;

import lombok.extern.log4j.Log4j2;
import mobao.baseinfo.user.entity.SysUserT;
import mobao.utils.JwtUtils;
import mobao.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class RedisTokenManager implements TokenManager {

    @Autowired
    private RedisUtils redisUtils;
    @Autowired
    private JwtUtils wtUtilsj;


    /**
     * 创建token
     * @param userInfo
     * @return
     */
    public String getToken(SysUserT userInfo){
        //使用uuid作为源token
        String token = wtUtilsj.generateToken(userInfo.getUserId());
        redisUtils.set(token,userInfo,wtUtilsj.getExpire());
        return token;
    }

    /**
     * 刷新用户
     * @param token
     */
    public void refreshUserToken(String token){
        if(redisUtils.exists(token)){
            redisUtils.get(token, wtUtilsj.getExpire());
        }
    }

    /**
     * 用户退出登陆
     * @param token
     */
    public void loginOff(String token){
         redisUtils.delete(token);
    }

    /**
     * 获取用户信息
     * @param token
     * @return
     */
    public SysUserT getUserInfoByToken(String token){
        if(redisUtils.exists(token)){
            return redisUtils.get(token,SysUserT.class);
        }
        return null;
    }

}